/*
 * 描          述:  <描述>
 * 修  改   人:  Administrator
 * 修改时间:  2016年10月20日
 * <修改描述:>
 */
package com.tx.core.ddlutil.builder.create.impl;

import com.tx.core.ddlutil.builder.create.AbstractCreateTableDDLBuilder;
import com.tx.core.ddlutil.builder.create.CreateTableDDLBuilder;
import com.tx.core.ddlutil.model.TableDef;
import com.tx.core.exceptions.util.AssertUtils;
import com.tx.core.starter.component.DatabaseTypeEnum;

/**
 * MySQL创建表DDL构建器<br/>
 * <功能详细描述>
 *
 * @author Administrator
 * @version [版本号, 2016年10月20日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class MysqlCreateTableDDLBuilder extends AbstractCreateTableDDLBuilder {

    /**
     * <默认构造函数>
     */
    public MysqlCreateTableDDLBuilder() {
        super();
    }

    /**
     * <默认构造函数>
     */
    private MysqlCreateTableDDLBuilder(String tableName) {
        super(tableName);
    }

    /**
     * <默认构造函数>
     */
    public MysqlCreateTableDDLBuilder(TableDef table) {
        super(table);
    }

    /**
     * @param tableName
     * @return
     */
    @Override
    public CreateTableDDLBuilder newInstance(String tableName) {
        AssertUtils.notEmpty(tableName, "tableName is empty.");

        CreateTableDDLBuilder builder = new MysqlCreateTableDDLBuilder(
                tableName);
        return builder;
    }

    /**
     * @param tableDef
     * @return
     */
    @Override
    public CreateTableDDLBuilder newInstance(TableDef tableDef) {
        AssertUtils.notNull(tableDef, "tableDef is empty.");

        CreateTableDDLBuilder builder = new MysqlCreateTableDDLBuilder(
                tableDef);
        return builder;
    }

    @Override
    public DatabaseTypeEnum getDatabaseType() {
        return DatabaseTypeEnum.MySQL;
    }
}
